# requests模块的深入使用
"""
使用requests发送POST请求:
思考：哪些地方我们会用到POST请求？
    登录注册（ POST 比 GET 更安全）
    需要传输大文本内容的时候（ POST 请求对数据长度没有要求）
语法: response = requests.post("http://www.baidu.com/", data = data(字典),headers=headers)
"""
# 使用爬虫完成金山翻译(POST请求练习)
"""
发送post请求：  requests.post(url, headers, params, data={})

通过抓包 找到 post请求的url地址，以及请求体参数

请求的url地址： http://fy.iciba.com/ajax.php?a=fy

请求方式：POST

请求体参数：
    data = {
        'f': 'auto', # 表示被翻译的语言是自动识别
        't': 'auto', # 表示翻译后的语言是自动识别
        'w': '人生苦短' # 要翻译的参数
    }
User-Agent:
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"}
"""
import requests
import json


class CiBa(object):

    def __init__(self, word):
        self.url = "http://fy.iciba.com/ajax.php?a=fy"
        self.word = word
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"
        }
        self.data = {
            "f": "auto",
            "t": "auto",
            "w": self.word
        }

    def send_request(self):
        """
        发送请求获取响应的方法
        :return: 响应的内容
        """
        response = requests.post(self.url, headers=self.headers, data=self.data)
        return response.json()
        # 默认返回bytes类型，除非确定外部调用使用str才进行解码操作
        # return response.content

    def parse_data(self, data):
        """
        解析数据的方法
        :param html_data: 响应数据
        :return:
        """
        try:
            # 从字典中抽取翻译结果
            result = data["content"]["out"]
        except Exception as e:
            result = data["content"]["word_mean"]

        print(f"{self.word} 的翻译结果是： {result}")
        # # 将json数据转换成python字典
        # dict_data = json.loads(data)
        # try:
        #     # 从字典中抽取翻译结果
        #     result = dict_data["content"]["out"]
        # except Exception as e:
        #     result = dict_data["content"]["word_mean"]
        #
        # print(f"{self.word} 的翻译结果是： {result}")

    def run(self):
        # 1. 准备url地址
        # 2. 发送请求 获取响应
        data = self.send_request()
        # 3. 提取数据
        self.parse_data(data)
        # 4.保存数据


if __name__ == '__main__':
    # ciba = CiBa("人生苦短，及时行乐")
    word = input("请输入要翻译的内容：")
    ciba = CiBa(word)
    ciba.run()
